package com.houweishi.module.evection.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 出差申请对象 oa_evection
 * 
 * @author houweishi
 * @date 2023-02-21
 */
@Data
public class OaEvectionApproval extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long evectionId;

    /** 用户id */
    private Long userId;

    /** 用户名 */
    @Excel(name = "用户名")
    private String username;

    /** 员工id */
    private Long staffId;

    /** 员工姓名 */
    @Excel(name = "员工姓名")
    private String staffName;

    /** 出差原因，事由 */
    @Excel(name = "出差原因，事由")
    private String evectionReason;

    /** 出差申请发起时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出差申请发起时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date initiateTime;


    /** 出差开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出差开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 出差结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出差结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 出差天数 */
    @Excel(name = "出差天数")
    private Long days;

    /** 是否预支差旅费（0否 1是） */
    @Excel(name = "是否预支差旅费", readConverterExp = "0=否,1=是")
    private String advance;

    /** 预支金额 */
    @Excel(name = "预支金额")
    private BigDecimal amount;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 所属租户 */
//    @Excel(name = "所属租户")
    private Long tenantId;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 是否使用模板（1是 2否） */
    @Excel(name = "是否使用模板")
    private String typeStatus;

    /** 模板id */
    private Long typeId;

    /** 模板名称 */
    @Excel(name = "模板名称")
    private String typeName;

    /** 审批人(多个） */
    private String approver;

    /** 审批人姓名(多个） */
    private String approverName;

    /** 申请表类型id */
    private Long subscribePatternId;

    /** 申请表类型名称 */
    @Excel(name = "申请表类型名称")
    private String subscribePatternName;

    /** 抄送人id */
    private String copyerId;

    /** 抄送人姓名 */
    @Excel(name = "抄送人姓名")
    private String copyerName;

    /** 流水单号 */
    @Excel(name = "流水单号")
    private String serialNum;

    /** 业务表审批状态 */
    @Excel(name = "业务表审批状态")
    private String businessStatus;


    @Override
    public String toString() {
        return new ToStringBuilder(this)
                .append("evectionId", evectionId)
                .append("userId", userId)
                .append("username", username)
                .append("staffId", staffId)
                .append("staffName", staffName)
                .append("evectionReason", evectionReason)
                .append("initiateTime", initiateTime)
                .append("startTime", startTime)
                .append("endTime", endTime)
                .append("days", days)
                .append("advance", advance)
                .append("amount", amount)
                .append("status", status)
                .append("tenantId", tenantId)
                .append("delFlag", delFlag)
                .append("typeStatus", typeStatus)
                .append("typeId", typeId)
                .append("typeName", typeName)
                .append("approver", approver)
                .append("approverName", approverName)
                .append("subscribePatternId", subscribePatternId)
                .append("subscribePatternName", subscribePatternName)
                .append("copyerId", copyerId)
                .append("copyerName", copyerName)
                .append("serialNum", serialNum)
                .append("businessStatus", businessStatus)
                .toString();
    }
}
